package com.wfg.function

/**
 * Scala的方法是类的一部分，但是函数比较特殊，Scala中的函数是一个对象，
 * 它可以赋值给一个变量，或者将函数这个对象作为一个方法传参，换而言之，在类中定义的函数即是方法。
 */
object TestFunction {
  def main(args: Array[String]): Unit = {
    /**
     * def functionName([参数列表]) : [return type] = {
     *     function body
     *     return [expr]
     * }
     *
     * 代码理解：
     * 【def】：Scala的关键字，且固定不变；
     * 【functionName】：方法名；
     * 【参数列表】写法：参数名称：参数类型，例【a：Int】，若有多个参数，则用逗号分隔开；
     * 【function body】：方法的主体；
     * 【return expr】：Scala方法的返回类型，可以是任意合法的Scala数据类型，若无返回值，则返回类型为Unit
     */
    def sayHi(name:String) :Unit ={
      print("hi" + name)
      println()
    }
    sayHi("aaa")
    TestFunction.sayHi("eee")
    println()
    println("===========")
    f4("eee")
  }
  def sayHi(name:String) :Unit ={
    print("hieeee    " + name)
  }

  def f4(str:String*):Unit = {

  }

  def f5(fun:(Int, Int)=>Int):Int={
    fun(1,2)
  }

  val add = (a : Int, b : Int) => a + b
  val mius = (a : Int, b : Int) => a - b

  println(f5(add))
  println(f5(mius))
}
